package cn.bookshare.book.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cn.bookshare.book.dao.BookDao;
import cn.bookshare.book.vo.Book;
import cn.bookshare.utils.PageBean;
/**
 * 项目名称：BookShare 
 * @author 热血绅士
 * @version 创建时间：2017年4月23日 下午5:34:09  
 *
 * 类名称：BookService 
 * 类说明:
 * 修改备注：
 *
 */
@Transactional
public class BookService {
	// 注入ProductDao
	private BookDao bookDao;

	public void setBookDao(BookDao bookDao) {
		this.bookDao = bookDao;
	}

	// 首页上热门商品查询
	public List<Book> findHot() {
		return bookDao.findHot();
	}

	// 首页上最新商品的查询
	public List<Book> findNew() {
		return bookDao.findNew();
	}

	// 根据商品ID查询商品
	public Book findByBid(Integer bid) {
		return bookDao.findByBid(bid);
	}

	// 根据一级分类的cid带有分页查询商品
	public PageBean<Book> findByPageCid(Integer cid, int page) {
		PageBean<Book> pageBean = new PageBean<Book>();
		// 设置当前页数:
		pageBean.setPage(page);
		// 设置每页显示记录数:
		int limit = 8;
		pageBean.setLimit(limit);
		// 设置总记录数:
		int totalCount = 0;
		totalCount = bookDao.findCountCid(cid);
		pageBean.setTotalCount(totalCount);
		// 设置总页数:
		int totalPage = 0;
		// Math.ceil(totalCount / limit);
		if (totalCount % limit == 0) {
			totalPage = totalCount / limit;
		} else {
			totalPage = totalCount / limit + 1;
		}
		pageBean.setTotalPage(totalPage);
		// 每页显示的数据集合:
		// 从哪开始:
		int begin = (page - 1) * limit;
		List<Book> list = bookDao.findByPageCid(cid, begin, limit);
		pageBean.setList(list);
		return pageBean;
	}

	// 根据二级分类查询商品信息
	public PageBean<Book> findByPageCsid(Integer csid, int page) {
		PageBean<Book> pageBean = new PageBean<Book>();
		// 设置当前页数:
		pageBean.setPage(page);
		// 设置每页显示记录数:
		int limit = 8;
		pageBean.setLimit(limit);
		// 设置总记录数:
		int totalCount = 0;
		totalCount = bookDao.findCountCsid(csid);
		pageBean.setTotalCount(totalCount);
		// 设置总页数:
		int totalPage = 0;
		// Math.ceil(totalCount / limit);
		if (totalCount % limit == 0) {
			totalPage = totalCount / limit;
		} else {
			totalPage = totalCount / limit + 1;
		}
		pageBean.setTotalPage(totalPage);
		// 每页显示的数据集合:
		// 从哪开始:
		int begin = (page - 1) * limit;
		List<Book> list = bookDao.findByPageCsid(csid, begin, limit);
		pageBean.setList(list);
		return pageBean;
	}

	// 后台查询所有商品带分页
	public PageBean<Book> findByPage(Integer page) {
		PageBean<Book> pageBean = new PageBean<Book>();
		// 设置当前页数:
		pageBean.setPage(page);
		// 设置每页显示记录数:
		int limit = 10;
		pageBean.setLimit(limit);
		// 设置总记录数:
		int totalCount = 0;
		totalCount = bookDao.findCount();
		pageBean.setTotalCount(totalCount);
		// 设置总页数:
		int totalPage = 0;
		// Math.ceil(totalCount / limit);
		if (totalCount % limit == 0) {
			totalPage = totalCount / limit;
		} else {
			totalPage = totalCount / limit + 1;
		}
		pageBean.setTotalPage(totalPage);
		// 每页显示的数据集合:
		// 从哪开始:
		int begin = (page - 1) * limit;
		List<Book> list = bookDao.findByPage(begin, limit);
		pageBean.setList(list);
		return pageBean;
	}

	// 业务层保存商品方法:
	public void save(Book book) {
		bookDao.save(book);
	}

	// 业务层删除商品
	public void delete(Book book) {
		bookDao.delete(book);
	}

	// 业务层修改商品的方法
	public void update(Book book) {
		bookDao.update(book);
	}
}
